#ifndef LIBRARY_SYSTEM_LIBRARY_H
#define LIBRARY_SYSTEM_LIBRARY_H

#include "Book.h"
#include <vector>
#include <string>

namespace library {

/**
 * @brief 图书馆类，管理所有图书和操作
 */
class Library {
private:
    std::vector<Book> books;    // 存储所有图书的容器
    std::string filename;       // 数据文件名，用于保存和加载图书信息

public:
    /**
     * @brief 构造函数
     * @param filename 数据文件路径
     */
    explicit Library(const std::string& filename);
    
    // 文件操作方法
    void loadBooks();           // 从文件加载图书信息
    void saveBooks() const;     // 保存图书信息到文件
    
    // 图书操作方法
    void displayBooks() const;  // 显示所有图书信息
    bool borrowBook(int id, int quantity);  // 借出图书
    bool returnBook(int id, int quantity);  // 归还图书
    void addBook(const std::string& name, const std::string& author, int stock);  // 添加新图书
    bool deleteBook(int id);    // 删除图书
    bool editBook(int id, const std::string& name, const std::string& author, int stock);  // 编辑图书信息
    
    // 统计和排序方法
    void sortByStock();         // 按库存量排序
    void showStatistics() const;  // 显示统计信息
};

} // namespace library

#endif // LIBRARY_SYSTEM_LIBRARY_H 